home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_10 / allison / sort.c < prev    next >
C/C++ Source or Header  |  1994-09-06  |  868b  |  45 lines

  1. LISTING 1
  2. /* sort.c: Sort strings */
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <assert.h>
  8.  
  9. #define MAXLINES 1024
  10.  
  11. static int scomp(const void *, const void *);
  12.  
  13. main(int argc, char *argv[])
  14. {
  15.     int i, n;
  16.     char *strings[MAXLINES], buf[BUFSIZ];
  17.  
  18.     if (argc > 1)
  19.         assert(freopen(argv[1],"r",stdin));
  20.  
  21.     for (n = 0; n < MAXLINES && fgets(buf,BUFSIZ,stdin); ++n)
  22.     {
  23.         strings[n] = malloc(strlen(buf)+1);
  24.         assert(strings[n]);
  25.         strcpy(strings[n],buf);
  26.     }
  27.  
  28.     qsort(strings, n, sizeof strings[0], scomp);
  29.  
  30.     for (i = 0; i < n; ++i)
  31.     {
  32.         fputs(strings[i],stdout);
  33.         free(strings[i]);
  34.     }
  35.     return 0;
  36. }
  37.  
  38. static int scomp(const void *p1, const void *p2)
  39. {
  40.     char *a = * (char **) p1;
  41.     char *b = * (char **) p2;
  42.     return strcmp(a,b);
  43. }
  44.  
  45.